//
// Created by 啊汤哥 on 2025/6/20.
//

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>


typedef struct LNode {
    int data; // 数据域
    struct LNode *next; // 指针域，指向后继元素
} LNode, *LinkList; // 结构体 别名

bool InitList(LinkList &L) {
    L = (LNode *) malloc(sizeof(L));
    if (L == NULL) {
        return false;
    }
    L->next = NULL;
    return true;
}

// 插入 -- 指定位置插入某一个元素
bool LinkInsert(LinkList &L, int i, int e) {
    LNode *newNode;
    // 1. 判断插入的值是否符合要求
    if (i < 1) return false;
    // 2. 指针P指向当前扫描的节点
    LNode *p;
    // 3. 当前P指向的是第几个节点
    int j = 0;
    // 4. L指向头节点 头节点是第0个节点
    p = L;
    // 5. 循环找到i -1 的节点
    while (p!=NULL && j<i-1) {
        p = p->next;
        j++;
    }
    if (p == NULL) return false;
    newNode = (LNode *)malloc(sizeof(LNode));
    newNode->data = e;
    newNode->next = p->next;
    p->next = newNode;
    return true;

}


// 判断链表是否为空
bool Empty(LinkList L) {
    if (L == NULL) return false;
    else return true;
}
